package com.yunji.cabinet.dao;

import com.yunji.cabinet.bo.CabinetCellListQueryBO;
import com.yunji.cabinet.bo.CabinetCellSelectQueryBO;
import com.yunji.cabinet.bo.CabinetCellUpdateBO;
import com.yunji.cabinet.bo.FillCargoBO;
import com.yunji.cabinet.domain.ContainerCell;
import com.yunji.cabinet.vo.CellProductCountVO;
import com.yunji.common.base.IBaseDao;

import java.time.LocalDateTime;
import java.util.List;

public interface ICabinetCellDao extends IBaseDao<ContainerCell> {
    boolean deleteByContainerIds(Long... ids);

    List<ContainerCell> searchCountCell(CabinetCellListQueryBO bo);

    boolean update(CabinetCellUpdateBO bo);

    int getRemainProduct(Long containerId);

    ContainerCell select(CabinetCellSelectQueryBO bo);

    boolean addProduct(Long cabinetId, Integer... nums);

    List<CellProductCountVO> countCellProduct(Long belongId);

    List<FillCargoBO> searchFillCargoCells(LocalDateTime localDateTime);

    List<ContainerCell> searchByContainerId(Long containerId);

    List<ContainerCell> search(CabinetCellListQueryBO bo);

    List<String> searchProductIdsByContainerId(List<Long> containerIds);

    List<ContainerCell> listByContainerId(Long containerId);
}
